package tech.aistar.corejava.day09.string;

import java.util.Arrays;

/**
 * Created by 李雨昂 on 2019/7/25.
 */
public class StringMethod {
    public static void main(String[] args) {
        //通过new对象
        String str = new String("abc");

        //获取字符串的长度
        System.out.println(str.length());

        //根据字符串下标来返回对应的位置的char值
        //下标也是从0开始的 - 字符串长度 - 1
        //如果越界 - StringIndexOutOfBoundsException - 字符串下标越界异常
        System.out.println(str.charAt(2));

        //拼接字符串
        String result = str.concat("def");//底层定义一个char[]数组,用来保存abcdef

        System.out.println(result);

        //boolean contains(CharSequence s);//多态 - 面向接口编程,方法的参数类型写成了接口,那么可以传入这个接口的任意实现类

        //判断字符串是否是某个字符序列
        System.out.println(str.contains("ab"));

        //判断字符串是否以某个后缀结束
        System.out.println("xxx.gif".endsWith((".gif")));//true

        //判断字符串是否以某个前缀开始
        System.out.println("aistar".startsWith("ai"));

        System.out.println("abc".equals("abc"));//true,说明String类肯定重写了equals方法

        String name = "李雨昂";

        //可以利用字节数组进行加密和解密操作
        //字节数组
        //将字符串转换成字节数组
        byte[] buf = name.getBytes();
        System.out.println(Arrays.toString(buf));

        for (int i = 0; i < buf.length; i++) {
            buf[i] ^= 888;//buf[i] = buf[i] ^ 888;
        }

        //通过String的构造,将字节数组转换长字符串
        //String(byte[] buf);
        String wstr = new String(buf);
        System.out.println(wstr);

        System.out.println("============");

        //返回字符串中某个字符第一次出现的位置
        //int indexOf(int ch)
        //char - > int

        System.out.println("bacad".indexOf("ac"));
        System.out.println("bacad".lastIndexOf('c'));

        //boolean isEmpty();//判断字符串长度是否为0
        System.out.println("".isEmpty());//true
        System.out.println("    ".isEmpty());//false

        //trim();//去除有效字符串长度的两边的空格
        System.out.println("      abc         ".trim());//abc
        System.out.println("      abc         ".trim().length());//3

        //replace();替换
        System.out.println("I Love Girl".replace("Girl","java"));

        System.out.println("============");
        //字符串的截取
        String x = "I Love Girl";
        String y = x.substring(1);//从下标1位置开始截取
        String z = x.substring(2,5);//[1,4)

        System.out.println("x = " + x);
        System.out.println("y = " + y);
        System.out.println("z = " + z);

        System.out.println("============");

        //大小写转换
        System.out.println("AAAABC".toLowerCase());
        System.out.println("bafd".toUpperCase());

        //static String valueOf(int i);//将int类型转换成String
        String n = String.valueOf(10);
        System.out.println(n);

        System.out.println("=========");
        //将字符串转换成字符数组

        char[] arr = "abcdef".toCharArray();
        System.out.println(arr);

    }
}
